#ifndef __debug_h__
#define __debug_h__

#include <stdio.h>

#define PlugName "SplashScreen"
extern char szLogFile[MAX_PATH];

/*
 * output a notification message.
 * may accept a hContact to include the contacts nickname in the notification message...
 * the actual message is using printf() rules for formatting and passing the arguments...
 *
 */

int inline _DebugPopup(HANDLE hContact, const char *fmt, ...)
{
    POPUPDATA ppd;
    va_list va;
    char    debug[1024];
    int     ibsize = 1023;

    va_start(va, fmt);
    _vsnprintf(debug, ibsize, fmt, va);
    
    if(CallService(MS_POPUP_QUERY, PUQS_GETSTATUS, 0) == 1) {
        ZeroMemory((void *)&ppd, sizeof(ppd));
        ppd.lchContact = hContact;
        ppd.lchIcon = LoadSkinnedIcon(SKINICON_OTHER_MIRANDA);
        if(hContact != 0)
            strncpy(ppd.lpzContactName, (char*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME,(WPARAM)hContact,0), MAX_CONTACTNAME);
        else
            strncpy(ppd.lpzContactName, PlugName, MAX_CONTACTNAME);
        strncat(ppd.lpzText, debug, MAX_SECONDLINE - 20);
        ppd.colorText = RGB(255,255,255);
        ppd.colorBack = RGB(255,0,0);
        CallService(MS_POPUP_ADDPOPUP, (WPARAM)&ppd, 0);
    }
    return 0;
}

/*
 * initialize logfile
 */

int inline initLog()
{
	fclose(fopen(szLogFile,"w"));
	return 0;
}

/*
 * log timestamp
 */

void inline logTimeStamp()
{
	FILE *f = fopen(szLogFile, "a");
	fprintf(f,"Time: %s\n", __TIME__);
	fclose(f);
}

/*
 * logging func
 */

void inline logMessage(const char *func, const char *msg)
{
	FILE *f = fopen(szLogFile, "a");
	fprintf(f,"%s:\t\t%s\n", func, msg);
	fclose(f);
}

#endif // __debug_h__